package entidades;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.Cascade;

@Entity
@Table
public class Cliente implements Serializable{
	private int idCliente;
	private String nombreCliente;
	private String tipoCliente;
	private String condVenta;
	private String email;
	private Collection <Cotizacion> cotizaciones= new ArrayList<Cotizacion>();
	private List <Descuento> descuentos;
	private CuentaCorriente cuentaCorriente;
	// Pagina 5, "Proceso de Venta a Clientes"
	private Collection <Compra> Compras;
	//private int volumenCompra;
	//private int frecuenciaCompras;
	//private int montoCompra;
	
	
	@Id
	@Column
	public int getId() {return idCliente;}
	public void setId(int idCotizacion) {this.idCliente = idCotizacion;}
	
	@Column
	public String getNombreCliente() {return nombreCliente;}
	public void setNombreCliente(String nombre) {this.nombreCliente = nombre;}
	
	@Column
	public String getTipoCliente() {return tipoCliente;}
	public void setTipoCliente(String tipoCliente){this.tipoCliente=tipoCliente;}
	
	@Column
	public String getCondVenta() {return condVenta;}
	public void setCondVenta(String condVenta) {this.condVenta = condVenta;}
	
	@OneToMany(fetch=FetchType.LAZY)
	public Collection<Cotizacion> getCotizaciones() {return cotizaciones;}
	public void setCotizaciones(List <Cotizacion> cotizaciones) {this.cotizaciones = cotizaciones;}
	
	/*
	 * Falta el metodo get y set para descuentos
	 * 
	 * public List <Descuento> getDescuentos() {return descuentos;}
	   public void setDescuentos(List <Descuento> descuentos) {this.descuentos = descuentos;}
	 */
	
	@OneToOne(cascade= CascadeType.ALL,mappedBy="cliente")
	public CuentaCorriente getCuentaCorriente() {return cuentaCorriente;}
	public void setCuentaCorriente(CuentaCorriente cuentaCorriente) {this.cuentaCorriente = cuentaCorriente;}
	
	/*
	public int getVolumenCompra() {return volumenCompra;}
	public int getFrecuenciaCompras() {	return frecuenciaCompras;}
	public int getMontoCompra() {return montoCompra;}
	*/
	
	@OneToMany(fetch=FetchType.LAZY)
	public Collection<Compra> getCompras(){return (Compras);}
	public void setCompras(Collection<Compra> compras) { this.Compras = compras;}
	
	@Column
	public String getEmail() {return email;}
	public void setEmail(String email) {this.email = email;}
	
	/*public ClienteVO getVO(){
		ClienteVO clienteVO=new ClienteVO();
		clienteVO.setCondVenta(this.condVenta);
		clienteVO.setCuentaCorriente(this.cuentaCorriente);
		clienteVO.setNombre(this.nombreCliente);
		clienteVO.setId(this.idCliente);
		return clienteVO;
	}
	
	public void setVO(ClienteVO clienteVO){
		this.setCondVenta(clienteVO.getCondVenta());
		this.setCuentaCorriente(clienteVO.getCuentaCorriente());
		this.setNombreCliente(clienteVO.getNombre());
	}*/
}
